Method for dynamic inventory dispensing and depletion of a vended product

ABSTRACT

One variation of a method for dynamically pricing vended products includes: identifying a purchase pattern of a user at a vending machine; in response to an approaching sell-by date for a unit of a product loaded into the vending machine and based on the purchase pattern, setting a discount rate for the unit of the product for the user; transmitting an electronic communication to an account associated with the user, the electronic communication indicating the discount rate for the unit of the product; identifying the user in a transaction initiated at the vending machine; and in response to selection of the unit of the product from the vending machine during the transaction, initiating a payment with a payment mechanism supplied by the user according to the discount rate.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 14/209,688, filed on 13 Mar. 2014, which claims the benefit of U.S. Provisional Application No. 61/779,402, filed on 13 Mar. 2013, U.S. Provisional Application No. 61/779,818, filed on 13 Mar. 2013, and U.S. Provisional Application No. 61/906,333, filed on 19 Nov. 2013, all of which are incorporated herein in their entireties by this reference.

The application is related to U.S. patent application Ser. No. 14/201,369, filed on 7 Mar. 2014, which is incorporated in its entirety by this reference.

TECHNICAL FIELD

This invention relates generally to the field of vending machines, and more specifically to a new and useful method for dynamically dispensing and depleting inventory in a vending machine.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a flowchart representation of a method of one embodiment of the invention;

FIG. 2 is a flowchart representation of one variation of the method;

FIG. 3 is a flowchart representation of one variation of the method;

FIG. 4 is a flowchart representation of one variation of the method; and

FIG. 5 is a flowchart representation of one variation of the method;

FIG. 6 is a flowchart representation of one variation of the method; and

FIG. 7 is a schematic representation of a smart shelf system in accordance with one variation of the method.

DESCRIPTION OF THE EMBODIMENTS

The following description of embodiments of the invention is not intended to limit the invention to these embodiments, but rather to enable any person skilled in the art to make and use this invention.

1. Method and Applications

As shown in FIG. 1, a method for dynamically pricing vended products includes: identifying a purchase pattern of a user at a vending machine in Block S120; in response to an approaching sell-by date for a unit of a product loaded into the vending machine and based on the purchase pattern, setting a discount rate for the unit of the product for the user in Block S130; transmitting an electronic communication to an account associated with the user, the electronic communication indicating the discount rate for the unit of the product in Block S140; identifying the user in a transaction initiated at the vending machine in Block S170; and in response to selection of the unit of the product from the vending machine during the transaction, initiating a payment with a payment mechanism supplied by the user according to the discount rate in Block S180.

The method functions to enable timely and dynamic pricing of products loaded into a vending machine to increase awareness and (price) availability of vended products to consumers, thereby promoting purchases, moving product out of the vending machine, and preventing waste of perishable or time-sensitive vended product. In particular, the method functions to distribute notifications of discount rates for particular units of product stored within a vending machine to select users, thereby prompting these users to purchase product from the vending machine. For example, the vending machine can be loaded with fresh produce and/or freshly-prepared foodstuffs, and these notifications can be time-sensitive such that a selected user may be incited to purchase a foodstuff from the vending machine prior to an expiration date or a sell-by date to the foodstuff and/or before the vending machine is restocked with new, fresh foodstuffs. Alternatively, the method can distribute notifications of discount rates for units of a new product loaded into a vending machine to arouse local interest in the product that is now available from the vending machine.

Blocks of the method can be implemented on a vending machine 100, such as described in U.S. patent application Ser. No. 14/201,369 and such as shown in FIG. 7. For example, the vending machine 100 can include: a housing 120 defining an open internal volume; a door 122 arranged across the open internal volume; a locking mechanism 112 that intermittently locks and unlocks the door 122; a radio-frequency identification (RFID) reader 160 that polls RFID tags arranged on units of product(s) arranged within the open internal volume; and a payment module 140 that collects payment information from patrons in exchange for vended product. The vending machine can operate by: locking the door of the vending machine; recording an initial inventory of products arranged within the vending machine based on signals received by the RFID reader; initiating a transaction in response to receiving a payment mechanism from a user (i.e., a “patron”); unlocking the door in response to authentication of the payment mechanism; recording a final inventory of products within the vending machine based on signals received by the RFID reader in response to closure of the door; and initiating a payment with the payment mechanism for a difference between the initial inventory and the final inventory to complete the transaction.

All or a portion of the method can alternatively be executed on a computer network in communication with the vending machine, such as a remote server in communication with the vending machine over the Internet via Wi-Fi or cellular communication protocol. The computer system can be a cloud-based computer (e.g., Amazon EC2), a mainframe computer system, a grid-computer system, or any other suitable computer system. For example, the computer system can be a remote server that communicates with one or more vending machines over HTTP (or TCP or UDP) protocols through a web service (e.g., Amazon AWS). The computer system can thus transmit product and/or customer data (e.g., product pricing schema, product shelf time, customer account and payment information) to and/or from vending machines over an Ethernet, cellular, Wi-Fi, satellite, or other suitable network. However, Blocks of the method can be implemented in any other suitable way and on any other suitable one or more computer systems and/or vending machines.

The method can therefore be particularly applicable to vending machines, smart shelf systems, or other point of sale systems that supply food and/or beverages, such as freshly-prepared salads, sandwiches, soups, and smoothies from various local vendors. For example, the method can execute on or in conjunction with a vending machine that stores and vends various fresh foodstuffs from one or more open shelves within, such as salads, sandwiches, and fresh fruits and vegetables stocked in the vending machine by one or more local suppliers, such as a local café, a local bakery, and/or a local produce farm. However, though the invention is described herein in the context of dynamically adjusting prices for fresh, perishable food units vending from a vending machine, the invention can also be applicable to vended electronic devices, paper newspapers and other printed media, DVDs and CDs, clothing, shoes, or any other vendable product.

2. Sell-by Date

One variation of the method includes Block S110, which recites identifying the sell-by date (and time) of the unit of the product. Generally, Block S110 functions to retrieve, generate, or calculate the sell-by date of a single unit of product currently stored in the (i.e., one) vending machine. For example, Block S110 can identify a single unit associated with an approaching (i.e., nearing) sell-by date and stored in a particular vending machine. Block S110 can additionally or alternatively function to retrieve, generate, or calculate a nearest or general sell-by date of multiple units of product(s) currently stored in the vending machine, such as units stored on a single shelf within the vending machine. For example, Block S110 can identify multiple units of the same product associated with one approaching sell-by date and stored together in one vending machine. In another example, Block S110 can identify an earliest sell-by date of multiple units of the same or different products stored together on one particular shelf or across multiple shelves in one vending machine. Yet alternatively, Block S110 can function to retrieve, generate, or calculate a nearest or general sell-by date of units of product(s) currently stored in multiple vending machines, such as units stored in vending machines within a particular geographic location. For example, Block S110 can identify a sell-by date common to multiple units of the same product stored within multiple (e.g., four) vending machines location on a single floor of an office building or throughout (a wing of) a shopping mall.

In one implementation, Block S110 inventories the vending machine to identify units stored therein by scanning contents of the vending machine. For example implementation, Block S110 can interface with an RFID reader (and/or an RFID antenna) arranged within the vending machine to broadcast a power signal into the open volume of the vending machine, thereby powering RFID tags arranged on units stocked in the vending machine to transmit encoded signals (e.g., unique identifiers, unique serial numbers) back to the RFID reader, such as described in U.S. patent application Ser. No. 14/201,369. Block S110 can then pass a form of each received signal (e.g., decrypted alphanumeric serial numbers) to a remote database to retrieve corresponding unit and/or product data. Alternatively, in this example implementation, Block S110 can retrieve unit or product data stored locally on the vending machine based on the encoded signals received from the RFID tags arranged on units within the vending machine.

In the foregoing example implementation, Block S110 can collect a unique serial number for a particular product that includes a first portion common to a particular product (e.g., a chicken salad sandwich) and a second portion unique to the unit of the product (e.g., the 8,374^(th) chicken salad sandwich delivered by a supplier to any related vending machine). For example, Block S110 can receive the numerical sequence “10027-000857” from an RFID tag arranged on a unit placed in the vending machine, wherein “10027” is a stock-keeping unit (SKU) number assigned to a veggie burrito with medium salsa from a particular vendor, and wherein “000857” is a unique serial number assigned to the particular RFID tag arranged on the product. In this example, Block S110 can implement the “10027” sequence to retrieve (e.g., from a remote server) a description, a pricing scheme, and a shelf life for units of the products assigned the same first portion of the numerical RFID tag output sequence. Furthermore, in this example, Block S110 can implement the “000857” sequence to retrieve unique information specific to the unit, including when the unit was prepared—such as from the remote server—and when the product was loaded into the vending machine—such as from local memory within the vending machine.

In another example implementation, Block S110 interfaces with an optical sensor or an optical scanner arranged within the vending machine to capture an image of the interior volume of the vending machine, implements machine vision to read barcodes or other identifying information printed or applied on unit packaging, and passes these barcodes or other identifying information to the remote (or local) database to retrieve corresponding unit and/or product data. However, Block S110 can function in any other way or interface with any other actuator or sensor to collect identifying information for units of one or more products stored within the vending machine.

As in the foregoing implementation, Block S110 collects identification data for units stored within the vending machine while the door to the vending machine is closed. For example, Block S110 can inventory the vending machine in response to closure of the door of the vending machine at the conclusion of a transaction and then store the inventory and/or related unit data until a subsequent transaction. In this example, until the subsequent transaction occurs, Block S110 can monitor a received or calculated sell-by date of one or more units of product(s) noted in the inventory, and Block S110 can then trigger Block S120 to select the user, Block S130 to set the discount rate, and Block S140 to transmit a corresponding notification to the user if a sell-by date falls within a threshold period of time of a current time prior to the subsequent transaction.

As described above, once (unique) identifying information for a unit of a product stored in the vending machine is collect, Block S110 can access related data from a local or remote database. In one implementation, Block S110 retrieves a pricing scheme, a preset shelf life, a product description, nutritional information, a supplier, and/or an ingredient list, etc. generic to the corresponding product, such as from the remote database. In this implementation, Block S110 can also retrieve a time and date on which the particular unit was scanned and/or loaded into the vending machine, heat exposure of the unit during a storage period at the vending machine, an age or supply date of ingredients (e.g., bread, deli meats) within the unit, etc., any of which can be stored locally in memory on the vending machine. In one example, Block S110 can then calculate a sell-by date of the unit based on the time and date on which the particular unit was loaded into the vending machine and the preset shelf life for the corresponding product. Furthermore, in this example, if a current date and time falls within a threshold time (e.g., twenty-four hours) from the sell-by date, Block S110 can trigger Block S120 to select the user, Block S130 to set the discount rate, and Block S140 to transmit a corresponding notification to the user. In another example, Block S110 can retrieve internal vending machine temperature data collected by a temperature sensor within the vending machine during storage of the unit therein, integrate detected temperatures of the vending machine over the storage time of the unit to calculate a heat exposure of the unit during its storage within the vending machine, and pass this calculated heat exposure into a shelf life model corresponding to the product—and retrieved from the local or remote database—to calculate a temperature-dependent sell-by date of the unit.

In another example, Block S110 retrieves a restocking schedule for the vending machine from the remote database, such as from a restocking order stored on the remote database and specifying the vending machine, or directly from a vendor (i.e., a supplier). Block S110 can then set a sell-by date for the unit that precedes a product scheduled delivery to the vending machine. For example, if a restocking order for the vending machine specifies additional units of the product for delivery to the vending machine, Block S110 can set the sell-by date for the current unit of the product to coincide with or to precede the scheduled delivery date and time of the additional units of the product. However, Block S110 can calculate a sell-by date for a single unit, a set of units of a particular product, a set of units arranged on one shelf of a particular vending machine, a complete set of units stocked in a single vending machine, or all units stocked in multiple vending machines (e.g., within a particular geographic location). Alternatively, Block S110 can retrieve such a sell-by date (and time) directly from the remote database.

Block S110 can therefore collect information relevant to real-time dynamic pricing of a particular unit or product, including a pricing scheme and a shelf time, and pass such relevant data to subsequent Blocks of the method. The pricing scheme and shelf time can be set by a vendor (e.g., café, restaurant, bakery) that prepares and/or stocks the product in the vending machine and/or can be specified by legal constraints, such as FDA-mandated safe shelf life durations for various products. The pricing scheme and/or shelf time of the unit or product can be general to all vending locations or specific to particular locations or particular vending machines, such as based on local product demand, customer traffic, customer preferences, restocking schedules, government or private single-product or vending machine subsidies, etc. For example, the shelf time of a particular product (e.g., veggie burrito with medium salsa from a particular vendor) can be shorter for a vending machine in a high-traffic area and/or in areas with customers who are more sensitive to fresh food than for a vending machine in a less trafficked area and/or areas with customers less sensitive to fresh food.

In one example implementation, the method receives product details, including the pricing scheme and product shelf time, from a vendor through a vendor interface that is accessible through a web browser and/or a native vending transaction application executing on a computing device, such as a smartphone, a tablet, a laptop, or specialized food service provider equipment. For example, a representative of the vendor can access the vendor interface to assign a product description and pricing schema associated with particular vending machine locations to a particular product SKU number. The method can store these product-related data in a database on a remote server for subsequent access in Block S110. However, the method and Block S110 can function in any other way to receive, store, and/or access the pricing scheme and the shelf life for the product in the set of products in the vending machine. Block S110 can also access pricing schema and shelf lives for multiple products in the vending machine simultaneously or over time.

However, Block S110 can identifying a sell-by date (and time) of one or more units stored in one or more vending machines in any other suitable way.

2. Selecting the User

Block S120 of the method recites identifying a purchase pattern of a user at a vending machine. Generally, Block S120 functions to select a user for whom the unit with approaching sell-by date may be of particular interest.

In one implementation, Block S120 retrieves a transaction history of the vending machine for a recent period of time, such as a previous week or a previous month, identifies a patron or a corresponding payment mechanism supplied in multiple transactions at the vending machine, and selects the patron (or an account of profile associated with the payment mechanism) as a potential customer for the unit of the product accordingly. For example, Block S120 can identify a past patron making a greatest number of distinct transactions at the vending machine or purchasing a greatest dollar amount of product from the vending machine within the past week as a primary or prime interested party for the purchase of the unit from the vending machine. Block S120 can thus pass a name, a phone number, an email address, an account name or pointer, a payment mechanism pointer, or other identifier of the selected patron to Block S130 and/or Block S140. In this implementation, Block S120 can also select multiple past patrons, such as five patrons completing the top five number of distinct transactions and/or the top five greatest purchase dollar amount within a preset period of time, such as the past week or past ten weekdays, and Block S120 can then pass identifiers of these multiple selected patrons to Blocks S130 and S140. Block S120 can also select a user exhibiting a greatest or a high number of distinct transactions or transaction dollar amount on a particular day of the week coinciding with a day of the week of the sell-by date of the item, on a sequence of contiguous days of the week ending in a day coinciding with a day of the week of the sell-by date of the item, or on a particular day of the week preceding a day of the week of the sell-by date of the item (e.g., by one day), etc.

In another implementation, Block S120 extrapolates—from a transaction history of the vending machine—purchase trends amongst patrons to predict a time during which a particular patron may be near the vending machine or otherwise sensitive to a prompt to make a purchase at the vending machine. For example, Block S120 can identify a patron who makes a purchase at the vending machine between 2:07 PM and 2:33 PM on 83% of weekdays over the past eight weeks, and select this patron as a candidate for the discount rate. In this example, Block S120 can detect purchase habits of multiple patron, each habit defining one or more days of a week and a purchase time window, and Block S120 can prioritize or order these patrons as candidates for a discount for items from the vending machine based on a confidence in anticipated future purchasing behavior, start times of purchase time windows, and/or durations of purchase times windows, etc. Block S120 can then pass a primary patron or an ordered list of patrons for delivery of notifications of discount rates. Block S120 can thus analyze a purchase history of a patron to identify a daily time window during which the patron historically initiates a transactions at the vending machine (or at another vending machine grouped with the vending machine), compare the daily purchase time window to a current time and/or to the sell-by date of the item, and select the patron as the candidate for the discount rate and the notification accordingly.

In yet another implementation, Block S120 extrapolates—from a transaction history of patrons at the vending machine—patron interest in one or more particular products vended from the vending machine. In one example, Block S120 analyzes purchase trends associated with one patron (e.g., based on a common payment mechanism supplied across multiple transaction) to identify a particular product commonly purchased by the patron and to match the particular product to a particular unit selected for discount in Block S110, to a unit of a particular product selected for discount in Block S110, to a unit stored on a particular shelf (within a vending machine) selected for discount in Block S110, to a unit stored within a particular vending machine selected for discount in Block S110, to a unit stored in a particular group of vending machines selected for discount in Block S110, etc. Block S120 can thus identify and select a past patron who frequently and/or consistently purchased a product selected for discount either directly or indirectly in Block S110 and who therefore may be particularly sensitive (e.g., substantially likely to purchase) to a discount for a unit of the product.

Block S120 can similarly detect user interest in a product that is complementary to a discount unit of a product based on a transaction history of the user and select the user as a candidate for the discounted unit of product accordingly. For example, for a user who commonly purchases bacon cheeseburgers from the vending machine, Block S120 can select the user for as a candidate for a discounted plate of French fries, which may be complementary to the cheeseburger. Block S120 can thus select the user as a candidate for a discounted unit that may complement or improve the user's experience with a product expected to be purchased by the user prior to expiration of the sell-by date of the discounted unit.

For a particular vending machine or for a particular shelf within a particular vending machine selected for discount in Block S110, Block S120 can similarly select a user who commonly or consistently purchases items from the particular vending machine as a candidate for a discount rate of product arranged within the particular vending machine or stored on the particular shelf of the vending machine.

In another implementation, Block S120 identifies mobile computing devices local to the vending machine (or to one vending machine within a group of set of vending machines) and selects one or more local mobile computing devices (each corresponding to a user) as a candidate for the discount rate set in Block S130. For example, Block S120 can interface with a wireless communication module arranged within the vending machine to detect with one or more smartphones, tablets, or other wireless-enabled computing devices near the vending machine, such as by communicating with the computing devices over Bluetooth or Wi-Fi communication protocol. In this example, Block S120 can select all of the computing devices—and/or users associated with the computing devices—as candidates for notifications for the discounted unit of product. Alternatively, Block S120 can pair data (e.g., a phone number, a unique wireless ID, an email address) collected from each of the local computing devices with particular past patrons of the vending machine and then filter transaction history of the vending machine down to transactions completed between the vending machine and the particular past patrons detected as near the vending machine. Block S120 can then implement any of the methods or techniques described herein to select a particular patron or a subset of the detected local patrons as candidates of the notification for the discount. Block S120 can also set threshold distance between a patron and the vending machine, such as fifty feet (e.g., based on a wireless signal strength or GPS coordinate received from a mobile computing device), to select or deselect local patrons as candidates for the notification for the discount. Block S120 can additionally or alternatively prioritize transmission of notifications to local patrons, such as by selecting a first detected patron nearest the vending machine as the first candidate of the notification and by selecting a second detected patron furthest from vending machine (but within a threshold distance from the vending machine) as a last candidate of the notification while the unit of product remains available from the vending machine. However, Block S120 can function in any other way to detect a set of mobile computing devices near (or within a threshold proximity of) the vending machine and to select one or more mobile computing devices, from the set of detected mobile computing devices, linked to a patron account as the candidate for the discount rate and the notification.

In the foregoing implementations, Block S120 can analyze transaction history stored in or associated with accounts of patrons who have frequented the vending machine, provided contact information into the vending machine, provided a cashless payment mechanism into the vending machine, created an account or profile for making purchases from the vending machine, etc. Block S120 can also group and analyze transaction histories across multiple vending machines, such as physically adjacent vending machines, vending machines arranged in one building or in one room, wing, or floor of the building, vending machines installed on one campus, vending machines installed throughout an airport, vending machines stocked by the same single or set of suppliers, vending machines owner and/or operated by the same entity, etc.

In yet implementation, Block S120 selects the user based on an input from a third party. For example, the vending machine can be arranged in a company office, an office manager can enter employee-of-the-week information into the vending machine or through a browser-based vending machine management interface, and Block S120 can select a particular user who is the employee of the week as the candidate for the discount or prioritize the particular user above other potential users as the candidate for the discount based on the particular user's status as an employee of the week at the company.

In another implementation, Block S120 selects the user based on a perceived or recorded dietary need, dietary preference, and/or food allergy of the user. In one example, Block S120 extrapolates a first patron's preference for blueberry yogurt based on the first patron's repeated purchase of blueberry yogurt around 2:30 pm on most (e.g., >75% of) weekdays, Block S120 can thus select the first patron as the candidate for a discount for a last blueberry yogurt stored in the vending machine. However, in this example, Block S120 can also determine that a second patron is lactose-intolerant based on the second patron's purchase history that excludes any dairy product despite availability of dairy products in local vending machines, and Block S120 can thus mark the second patron as an improper candidate for a discount for a blueberry yogurt. In another example, Block S120 accesses a user profile including dietary needs of the user, identifies the user as gluten-intolerant and a vegetarian, and selects the patron as a candidate for discount of a gluten-free and vegetarian unit selected for discount in Block S110, and Block S120 excludes the user from notifications for products containing animal products and/or gluten. As in the foregoing implementations, Block S120 can also prioritize notifications of discounts for users according to various dietary needs and/or preferences of multiple users, such as by prioritizing users with more dietary restrictions or by prioritizing user with dietary restrictions yielding viewer suitable product options.

Block S120 can similarly select the user based on a perceived sensitivity of the user to fresh products. For example, if transaction records indicate that a first patron only purchases fresh items (e.g., items stored in the vending machine for fewer than four hours) and that a second patron exhibits little statistically significant interest in fresh or older products, Block S120 can select the second patron as the candidate for the discounted unit because the second patron may be more likely to purchase the unit than the first patron.

Block S120 can additionally or alternatively select the user based on a perceived price sensitivity of the user. For example, Block S120 can retrieve user interaction data stored with the user's account on the remote database, the interaction data including records of if and/or how many times the user reviewed a receipt of a past transaction at one or more vending machines, if the user reviewed a product price list or menu before selecting an item from a vending machine in a past transaction, if the user previously responded to a price reduction incentive (e.g., by entering into a rewards program, by supplying additional contact info in exchange for a future discount), etc. Block S120 can then extrapolate a sensitivity of the user from these data and then select the user—from a set of other patrons also associated with a qualitative or quantitative measure of price sensitivity—accordingly. For example, Block S120 can select the user who is most price-sensitive—from the set of patrons—to supply the user with a discount, thereby encouraging the user to complete a transaction at the vending machine, thereby possibly creating or reinforcing a habit for purchasing product from the vending machine and reducing the user's price sensitivity over time.

Block S120 can similarly select the user based on the user's history of responding to discount notifications. In particular, Block S120 can select the user—from a set of local patrons—to whom to direct the discount because the user responded to 73% of previous discount notifications by purchasing the discounted product, wherein other patrons in the set of local patrons responded to a lower percentage of such discount notifications by purchasing the discounted product. In this implementation, Block S120 can additionally or alternatively select the user—from the set of patrons—based on how quickly the user responds to the discount notification by completing a transaction with a vending machine.

However, Block S120 can function in any other way to select the user to whom Blocks S130 and S140 cooperate to direct a notification for a discounted rate for a particular unit of a product, units stored within a particular vending machine, or units stored within a group of vending machines, etc.

4. Price Adjustment

Block S130 of the method recites, in response to an approaching sell-by date for a unit of a product loaded into the vending machine and based on the purchase pattern, setting a discount rate for the unit of the product for the user. Generally, Block S130 functions to adjust a current price of the unit of the product selected in Block S110 based on various product-related and/or time-dependent factors in order to increase demand for the unit and thus move the unit from the vending machine. Block S130 can therefore manipulate a price of the unit—such as by setting a discount rate for the unit of product—to sell the unit prior to the sell-by date of the unit, thereby preventing waste, spoilage, or under-consumption of the product. For example, Block S130 can set a price for the unit at a new discounted price predicted to provoke the user (selected in Block S120) to purchase the unit of the product prior to the sell-by date based on the user interest in the product. In another example, Block S130 can set a discount rate (e.g., 20%) for all units of all products stored in a vending machine to prompt multiple users selected in Block S120 to (completely) empty the vending machine prior to a scheduled restock time and date.

In one implementation, Block 130 applies a standard or preset discount rate, such as 20%, defined for all products vended from the vending machine and stored locally on the vending machine or remotely on a server or computer network. In a similar implementation, Block S130 retrieves a product-specific discount rate from a file corresponding to the product and stored on a remote database.

Alternatively, Block S130 can calculate a discount rate (e.g., a percentage discount or a final discounted price) for the unit of the product based on an age of the unit. In one implementation, Block S130 adjusts the price of the unit of the product inversely with the age and/or shelf time of the unit. For example Block S130 can thus apply a shelf time of the unit (i.e., an amount of time between when the unit was loaded into the vending machine and a current time) to a pricing scheme to set the new product price. In the example, a price of the unit can be set at an initial price while the unit shelf time is less than a threshold shelf time, and Block S130 can reduce the price of the unit to a second preset price when the shelf time of the unit is greater than the threshold shelf time. Block S130 can also implement additional product pricing tiers, such as by reducing the price of the unit—continuously or according to a step function (as shown in FIG. 2)—as the shelf life of the unit increases and/or as the sell-by date of the unit approaches. For example, once the unit reaches a shelf time of twelve hours, Block S130 can reduce the price of the unit at the rate of 5% for every hour after twelve hours. Alternatively, Block S130 can reduce the price of the product every half hour, every hour, or every four hours and linearly, exponentially, or otherwise with time or according to any other schedule after once the unit is stocked in the vending machine or after the unit reaches a threshold shelf time after being loaded into the vending machine.

Block S130 can also decrement the price of the product according to an upcoming event or time. For example, if the vending machine is arranged in an office that is open Monday through Friday but closed on the weekends and a unit of a product was loaded into the machine on Friday morning but still remains at 2 pm the same day, Block S130 can significantly lower the price of the unit to substantially ensure purchase of the unit prior to close of office later that day, thereby substantially reducing a likelihood that the unit remains in the vending machine over the weekend (and spoils before the office opens again the following Monday). In a similar example, if the vending machine is arranged in an office in which employees often work later into the evening, Block S130 can significantly lower the price of the unit after 7 pm to substantially ensure purchase of the product prior to the following morning.

In addition to the age of the unit, the amount of time the product has been in the vending machine, the pricing scheme associated with the product, and/or the shelf life (or time) of the unit, Block S130 can adjust the discount rate (e.g., price) of the unit based on any one or more of a time of day, day of the week, local “deal,” location of the containing vending machine, user preferences, upcoming deliveries or scheduled restocking times of the vending machine, product or vending machine subsides, a number of other similar or complementary units stocked in the vending machine, a local weather condition, a day of the year or current holiday, etc. For example, Block S130 can discount flowers stocked in the vending machine on Valentine's Day or discount a unit of a patron's favorite (or more-often purchased) product on the patron's birthday. In another example, Block S130 can discount cold drinks or sunscreen stocked in a vending machine on hot or sunny days and discount hot soup or umbrellas on cold or rainy days. Block S130 can therefore also cooperate with Block S110 to identify other products in the vending machine that are similar or complementary to the product, access a restocking schedule, a date or time of day, a GPS location of the vending machine, a transaction profile of the vending machine, stored vending machine- or location-specific user profile or preference data, or any other relevant data, such as stored locally on the vending machine or remotely in a database on a remote server and apply any one or more of these data to a current or original price of the unit to calculate a new price (or a new discount) for the unit.

Thus, in one implementation, Block S130 can adjust a price (or discount) of the unit according to similar or complementary units loaded into the vending machine. For example, if the unit selected in Block S110 is a breakfast burrito originally stocked with several similar breakfast burritos, Block S130 can cut the price of the unit when all other breakfast burritos have been sold to entice a patron to remove the last breakfast burrito from the vending machine before a supplier stocks the vending machine with a fresh supply of breakfast burritos. In another example, if the product is a bowl of coleslaw that local users commonly pair with pulled pork sandwiches also vended from the vending machine, Block S130 can cut the price of a bowl of coleslaw when only one pulled pork sandwich remains in the vending machine to thus further ensure that a patron who selected the last pulled pork sandwich will also select the bowl of coleslaw.

In other implementations, Block S130 can adjust a price of the unit based on a daily deal, based on a government or office subsidy, or based on nutritional (e.g., caffeine) content of the unit (which may be standard across units of the product). For example, between the hours of 2 pm and 3:30 pm when office employees commonly purchase calorie-dense, unhealthy foods from the vending machine, Block S130 can increase the price of unhealthy foods like prepackaged cookies and decrease the price of healthier foods like a hummus and veggie plate, thereby encouraging patrons to consume healthier snack options. Block S130 can also apply new product pricing data to the price of the unit substantially in real-time, such as in response to entry of new pricing data from a corresponding supplier or vendor.

Block S130 can also set the discount rate of one or more units vended from the vending machine based on a traffic or transaction rate at the vending machine. For example, for a vending machine that is highly trafficked (e.g., a vending machine at which an average of ninety transactions are completed each weekday), Block S130 can set a discount rate of 20% for an item selected for discount in Block S110. However, in this example, for a vending machine subject to significantly less traffic (e.g., a vending machine at which an average of twenty transactions are completed each weekday), Block S130 can set a lower discount rate of 50% for an item selected for discount in Block S110. However, Block S130 can decrement the price of (or increase a discount for) the unit in any other way and according to any other schedule, pricing scheme, or variable.

In an alternative implementation, Block S130 increases the price of (or decreases the discount for) the unit. For example, if the unit is a breakfast burrito with a specified shelf life of forty-eight hours and was loaded into the vending machine on a Monday morning, Block S130 can first reduce the price of the product on Monday afternoon or evening as described above, and Block S130 can then increase the price of the product on Tuesday morning (e.g., when local demand for breakfast burritos increases). Block S130 can also predict current or upcoming product demand, such as based on purchase history from the vending machine (and other local vending machines). For example, Block S130 can set an increased price of (or reduced discount for) snacks loaded into the vending machine between 2 pm and 4 pm on weekdays for a vending machine that is arranged in an office with employees who frequently purchase snacks during weekday afternoons. However, Block S130 can raise or adjust the price of the unit of the product according to any other schema.

In the foregoing implementations, Block S130 can set the discount rate that is specific to a single user. For example, Block S130 can assign a discounted price for the unit of the product to a transaction with the selected user but assign an original price for the unit of the product to a transaction with an other patron of the vending machine, wherein the original price is greater than the discount price. In this example, Block S110 can select the user who has completed more transactions with the vending machine, spent a greater amount of money at the vending machine, or exhibited a greater affinity for one or more products vended from the vending machine during a period of time than the other patron, such as indicated in a transaction history of the vending machine, and Block S130 can set different prices for the unit (or different discounts for various units of one or more products contained in one or more vending machines) for various patrons of the vending machine(s).

Block S130 can also set the discount rate that applies to all units of the same or different products stored on a particular shelf (or set of shelves) within a particular vending machine. For example, Block S110 can identify a single unit stored on a particular shelf of a vending machine and associated with a sell-by date scheduled within a threshold period of time (e.g., twelve hours), identify all other units of the same or different product also stored on the particular shelf, and pass identifiers of all of these units to Block S130. In this example, Block S130 can retrieve pricing information for each of these units (e.g., original prices, current prices, discount models or algorithms, etc.), such as from the remote database, and then manipulate this pricing information to set a common discount rate for all of the units stored on the particular shelf or to set new independently-discounted prices for all of the units of the particular shelf to encourage one or more users to purchase items from the particular shelf (rather than another shelf within the vending machine).

In one implementation, Block S130 can similarly calculate, generate, and/or apply a discount to all items currently stored in a particular vending machine, such as if the particular vending machine is scheduled to be completely restocked within a threshold period of time (e.g., within four hours). Block S110 and Block S130 can thus cooperate to inventory a set of foodstuffs arranged on a particular shelf within the vending machine, to retrieve sell-by dates for the set of foodstuffs (e.g., from a remote server), to identify a current time as within a threshold time of the sell-by date of the unit, and to set a percentage discount across the set of foodstuffs within the vending machine. Thus, in this implementation and as shown in FIG. 5, the method can further include Block S132, which recites setting a visual indicator coupled to the particular shelf to visually distinguish the percentage discount applicable to units arranged on the particular shelf from a second discount applicable to units arranged on a second shelf within the vending machine. For example, Block S130 can control a first set of LEDs within the vending machine to illuminate the particular shelf green to visually indicate that product arranged on the particular shelf is discounted, and Block S130 can control a second set of LEDs within the vending machine to illuminate a second shelf within the vending machine blue to visually indicate that product arranged on the second shelf is not discounted. In another example, Block S130 can set different discount rates for different shelves of product within the vending machine, and Block S130 can control various LEDs within the vending machine to illuminate the shelves within according to discount rates assigned for different shelves, such as by illuminating a first shelf assigned a 0% discount green, illuminating a second shelf assigned a 10% discount yellow, and illuminating a third shelf assigned a 20% discount red, such as shown in FIG. 5. Block S132 can additionally or alternatively control a digital display, another light source, or other signage coupled to the vending machine to present discount information to patrons within visual range of the vending machine.

Similar to the foregoing implementation, Block S130 can also set a discount rate (or corresponding unit prices) that is applicable to all products currently stored in multiple vending machines, such as by a set of vending machines installed within a particular build or geographic location. In this implementation, Block S132 can thus control a visual indicator coupled to the vending machine to indicate a discount across all products within the vending machine. In these implementations, Block S130 can control a visual indicator coupled to the vending machine at all times that a discount is applicable, or Block S132 can cooperate with Block S150 to identify a user in a new transaction, to match the identified user to the user selected in Block S110, and to actuate the visual indicator to visually present one or more discount specifically for the select user who is now engaging in a transaction with the vending machine. However, Block S132 can function in any other way to provide a visual indicator of a unit, product, shelf, or vending machine-wide discount.

Block S130 can also set an expiration time for the discount rate for the unit. In one implementation, Block S130 sets a timer for selection of the unit of the product by the user, wherein the set discount rate for the unit (or for a product, a shelf within a vending machine, all units in a vending machine, or for all units stocked across multiple vending machines) is applied to purchase of the unit by the user up to the time that the timer expires. In one example, Block S130 sets the timer to expire at the sell-by date and time of the unit and triggers the vending machine to lock or to otherwise prevent sale of the unit if the unit is not sold upon expiration of the timer. In another example, Block S130 sets the timer to expire before the sell-by date and decreases the discount for (i.e., increases the price of) the unit for the user if the user does not purchase the unit before expiration of the timer. Alternatively, Block S130 can increase the discount for (i.e., decrease the price of) the unit for the user if the user does not purchase the unit before expiration of the timer, such as to further urge the user to purchase the unit.

In another example, Block S130 sets the timer to expire before the sell-by date and, if the unit is not sold to a first user upon expiration of the timer, triggers Block S110 to select an alternative second user to whom to target a subsequent discount of the unit. In this example, Block S130 can apply the same discount rate set for the first user to purchase of the unit by the second user, or Block S130 can increase the discount for the second user, such as in light of the approaching sell-by date of the unit. Therefore, if the discount timer set in Block S130 expires prior purchase of the unit—by the user or by another patron—Block S110 can implement methods described above to identify interest in the product by a second user (e.g., based on a purchase history of the second user at the vending machine or a set of vending machines within a geographic area), and Block S130 can implement methods described above to set a second discount rate for the unit of the product for the second user according to the (perceived) interest of the second user in the product. Block S140 can then transmit a second electronic communication to an account associated with the second user to notify the second user that a unit of the product is available from a (local) vending machine at the second discounted rate. Alternatively, Block S110 can pass an ordered or prioritized list of users for whom the unit may be of interest to Block S130, and Block S130 can step through the list in order to set discount rates accordingly for these users and to trigger Block S140 to notify these users of their discounts as discount timers for these users' discount expire.

Furthermore, if the unit of the product is purchased by another patron or the particular shelf or complete vending machine is emptied by one or more other patrons during a period of time during which the discount assigned to the user is valid, Block S130 can renege the user's discount.

However, Block S130 can function in any other way to set one or more discounts for one or more users based on selection of a particular unit, a particular product, or product stored on a particular or across one or more vending machines for discount and substantially immediate sale.

5. Electronic Communication

Block S140 of the method recites transmitting an electronic communication to an account associated with the user, the electronic communication indicating the discount rate for the unit of the product. Generally, Block S140 functions to notify the user selected in Block S110 of the availability of the unit stocked in the vending machine and/or a new price of the unit. Block S140 can thus generate the electronic communication that indicates the discount rate (e.g., a percentage discount) or new price for the unit of a product, a discount for a product or group of products, a discount for a shelf of units within a vending machine, and/or a discount for all units stocked in a vending machine, as well as corresponding the unit, product, shelf, and/or vending machine, etc. Block S140 can generate the communication that also specifies a number of units of the product and/or units of other product(s) stocked in the vending machine, nutritional information of the unit or product, original cost of the unit or product, and/or an expiration date and time of the discount, etc.

In one implementation, Block S140 accesses user data supplied by the user during a previous transaction made by the user and/or user data linked to a vending account associated with the user and selects an address to which to deliver the notification from these user data. For example, Block S140 can select an email address, a phone number, a social networking profile, an employee or office account, a credit card, or an other payment system or an account or profile previously entered into a vending machine by the user during a previous transaction, such as described in U.S. patent application Ser. No. 14/201,369. For example, Block S140 can transmit the electronic communication to a smartphone linked to the user's account—such as via SMS text message or via an in-application notification within a native vending transaction application executing on the user's smartphone—if the vending machine is substantially removed from an office or similar workplace such that the user is likely to receive and view the communication while the communication is timely. However, if the vending machine is located near an office or similar workplace, Block S140 can transmit the communication to an email address associated with the user such that the user may receive and review the communication while working at a computer. Block S140 can also transmit a form of the communication to multiple addresses associated with the user substantially simultaneously.

Block S140 can additionally or alternatively push a notification to the user in the form of a public or private communication (e.g., a post, a message, a “tweet”) within a social networking system, a phone call or voicemail message, a calendar alert, etc. However, the method can track user purchases and collect user contact information in any other way, and Block S140 can transmit the notification to the user through any such communication channel.

In one example implementation, during a previous transaction, the vending machine can request a phone number and/or email address from the user, send a transaction receipt to the user's phone number via SMS text message or to the user's email address in an email, and create transaction account for the user, the transaction account linked to the phone number and/or email address provided by the user and containing a database of purchase records of the user at the vending machine (and other linked or related vending machines). In this example implementation, when Block S110 later selects the user as a candidate for a discounted unit of product, Block S140 can push a notification to the user's phone number or to the user's email address. Furthermore, in this example implementation, Block S110 can track proximity of a phone assigned with the user's phone number or linked to the user's email address to determine a proximity of the user to the vending machine—such as by polling a GPS sensor within the user's phone—and can thus select the user when within a threshold distance (e.g., fifty feet) of the vending machine, and Block S140 can then transmit the notification to the user when the user is within the threshold distance from the vending machine.

Block S140 can also time transmit the electronic communication to the user at a particular time at which the user may be particularly sensitive to a discount for the unit. For example, Block S140 can cooperate with Block S110 to identify a window of time during which the selected user often engages in a transaction with the vending machine, engage in a transaction with a linked or nearby vending machine, purchases the product from the same or nearby vending machine, or purchases a complementary product from the vending machine, etc., and Block S140 can transmit the notification to the user just before, at the start of, or during this time window (and prior to the sell-by date).

Block S140 can also cooperate with Block S110 to implement hierarchical notifications to selectively inform users of product availability and pricing. In one example implementation, Block S140 selectively pushes the notification to a frequent return user, a “high-dollar” user who often purchases several units and/or a product of greater-than-average cost, a “mayor” of the vending machine who frequently “checks-in” to the vending machine, a user who positively posts to a social networking system in reference to the vending machine and/or a product purchased from the vending machine, etc. In this example implementation, Block S140 can thus reward a user for a past purchase from the vending machine by notifying the user, prior to other users, of product availability and adjusted pricing for the product. Alternatively, Block S140 can push the notification to several users simultaneously, such as to users with a threshold distance from the vending machine.

Block S140 can also push the electronic communication to the user based on user notification preferences. In one implementation, the user sets notification preferences by accessing his vending account through a web browser-based interface or through a native vending transaction application executing on a mobile computing device. The user can thus adjust or correct predicted user preferences based on prior user purchases and/or set when or what types of product-related notifications he prefers to receive. For example, if the user often purchases two lunches in the same transaction, including a lunch for himself and a lunch for a coworker, the method may combine the contents of both lunches in predicting the user's taste preferences. Thus, in this example, the user can access his vending account and remove his coworker's lunch products from the set of lunch products that the method analyzes to determine user taste preferences. In another example, the user can access his vending account to request notifications for spicy burritos, fresh soups, and discounted fruit. However, the method can receive any another other suitable user notification preference through any other account, profile, or communication channel, and Block S110 and Block S140 can implement these user's notification preferences in any other suitable way to selectively push product availability and/or discount information to the user.

In one variation of the method, Blocks S130, S140, and S150 cooperate to identify the user, to adjust the price of the product for the user specifically, and to greet the user with a notification for the product and its adjusted price when the user interfaces with (i.e. walks up to and engages) the vending machine. In one example implementation, Block S150 identifies the user based on payment information, an account login, etc. entered into the vending machine by the user at the beginning of a transaction with the vending machine. In another example implementation, Block S150 identifies the user by accessing an image from a camera arranged on the vending machine and implementing machine vision techniques to identify the user. In yet another example implementation, Block S150 retrieves identifying information (e.g., a phone number, a unique wireless communication ID) from a nearby smartphone and identifies the proximity of the user to the vending machine based on this identifying information (though Block S150 can identify the user near the vending machine in any other way). Subsequently, Block S130 can analyze user and/or product information substantially in real-time to set an adjusted price of the unit currently stocked in the vending machine, and Block S140 can interface with a display (e.g., a touchscreen) or other visual indicator arranged on the vending machine to greet the user and to present an advertisement for the product and its adjusted price to the user. Thus, in this variation, Blocks S130 and S140 can cooperate to dynamically adjust a price of a vended product for a particular user substantially in real-time when the user is engaging directly with the vending machine.

Similarly, Block S150 can detect a user walking by the vending machine, Block S110 and S120 can cooperate to identify a relevant unit of a product stocked in the vending machine to the user, and Block S140 displays a message on a display coupled to the vending machine and/or plays an audible message through a speaker coupled to the vending machine. For example, Block S140 can visually or audibly present a prompt that recites, “Hey Alex, swipe your credit card to receive your surprise discount” or “Hey Alex, there is only one [Alex's favorite item] left, come get it!” to the user. In this implementation, Block S120, S140, and S150 can additionally or alternatively cooperate to deliver an audible or visual message to the user—through the vending machine—to inform the user of an upcoming or recent vending machine restocking event, installation of a new local vending machine, availability of a new product at the vending machine, etc.

In one variation, Block S140 further functions to receive a reservation for the discounted unit or product, as shown in FIGS. 1 and 2. For example, Block S140 can transmit to the selected user the notification that includes unit information, discount information, and a prompt to reserve the unit. In this example, when reviewing the notification, the user can select the prompt to reserve the unit, and Block S140 can collect and implement this selection to hold the unit (or another unit of the same product) for the user until the user returns to the vending machine to collect the unit. Thus, in this variation, the vending machine can recognize the user when the user returns to the vending machine to collect the unit—such as by extracting identifying information from a payment system supplied to the vending machine by the user or from facial recognition of an image taken of the user at the vending machine, as described above—and then unlock or release the reserved item for the user accordingly.

6. Transaction

Block S170 of the method recites identifying the user in a transaction initiated at the vending machine. Generally, Block S170 functions to determine that the user is presently engaged with the vending machine and is associated with a valid discount. In one example, Block S170 cooperates with Block S180 to extract identifying information from a payment system (e.g., a credit card) supplied by the user at the start of, during, or upon the conclusion of a transaction and then matches the identifying information to a pointer to the user selected in Block S110. In another example, Block S170 retrieves identifying information—such as a phone number of unique wireless ID—from a smartphone or other computing device carried by the user and matches this information to an account associated with the user to identify the user and the corresponding discount. Block S170 can also interface with a camera to capture an image of the user at the vending machine and can implement machine vision techniques to identify the user from the image, as described above. However, Block S170 can function in any other way to identify the user in a transaction with the vending machine and to match the user to the available discount set in Block S130.

Block S180 of the method recites, in response to selection of the unit of the product from the vending machine during the transaction, initiating a payment with a payment mechanism supplied by the user according to the discount rate in Block S180. Generally, Block S180 functions to apply the discount rate to the purchase of the unit from the vending machine during pendency of the discount, such as prior to expiration of the timer set in Block S130 and/or prior to the sell-by data and time.

In one process flow described in U.S. patent application Ser. No. 14/201,369, Block S180 handles a transaction between the user and the vending machine by locking a door of the vending machine following a previous transaction, recording an initial inventory of products arranged within the vending machine, initiating the transaction in response to receiving the payment mechanism from the user, unlocking the door in response to authentication of the payment mechanism, and recording a final inventory of foodstuffs within the vending machine in response to closure of the door.

In particular, in this process flow, Block S180 can lock a door of the vending machine to secure items stored within until a new transaction is initiated with a valid payment mechanism supplied by the positively-identified user (or until a vendor unlocks the door to stock new items into the vending machine). Thus, once a previous patron closes the door of the vending machine after making an item selection, Block S180 can trigger a locking mechanism to lock the door of the vending machine until a subsequent patron (e.g., the user) later approaches the vending machine and furnishes a valid payment mechanism, such as by swiping a credit card or tapping an NFC-enabled smartphone on a NFC reader in the vending machine.

Then, with the door now closed and locked, Block S180 can record the final inventory of product stocked in the vending machine, such as by polling RFID tags arranged on product stocked in the vending machine and identifying each unit of product based on unique ID data received from each RFID tag, as described above. For example, Block S180 can control an RFID antenna and reader to broadcast a power signal into a volume of the vending machine containing the unit of the product, to receive a signal from a wireless transmitter (e.g., RFID tag) arranged on the unit of the product, and to identify the unit stored within the vending machine based on the signal and product data stored on a computer network.

Later, Block S180 can initiate a new transaction when a new patron supplied a payment mechanism, such as cash or a credit card. Block S180 can also authorize, authenticate, and/or validate the received payment mechanism and cooperate with Block S170 to confirm the new patron as the user selected in Block S170, as described above. Once the user is identified and the payment mechanism authenticated, Block S180 can trigger the locking mechanism to unlock the door, thereby providing the user with access to product stocked in the vending machine.

Once the user closes the door and the locking mechanism again locks the door, Block S180 can again inventory remaining product within the vending machine, such as by polling RFID tags arranged on the remaining product and identifying each item by a unique received ID, as described above. Block S180 then compares this final inventory to the previous inventory recorded before the door was unlocked for the user to determine one or more particular units removed from the vending machine and cross-references the particular removed unit(s) against the item, product, and/or shelf, selected in Block S110 to determine if a pending discount associated with the user is applicable to the transaction. If the discount is confirmed as applicable to the transaction, Block S180 applies the discount to each corresponding unit removed from the vending machine during the transaction and calculated a total bill for the user.

Block S180 can then automatically trigger payment for transaction total via the payment system supplied by the user. Block S180 can also transmit a receipt for the transaction to the user, such as to the same address selected for transmission of the electronic communication in Block S140 (e.g., the user's smartphone) or to a new address (e.g., phone number, email address) supplied by the user during the transaction. However, Block S180 can handle a transaction between the user and the vending machine in any other suitable way.

7. Restocking

As shown in FIGS. 3 and 6, one variation of the method includes Block S190, which recites transmitting a restock order for the vending machine to a product supplier in response to removal of the unit of the product from the vending machine. Generally, Block S190 functions to transmit a notification or other electronic communication to a vendor or supplier of one or more products for the vending machine based on an inventory of the vending machine. In one example, once the unit selected in Block S110 is purchased and removed from the vending machine, Block S190 can transmit a notification to a supplier associated with the corresponding product to prompt the supplier to restock the vending machine with new units of the product. In another example, once all units of a particular product selected in Block S110 are purchased and removed from the vending machine, Block S190 can similarly transmit a notification to a supplier of the product to prompt the supplier to restock the vending machine with new units of the product. In yet another example, once one or more patrons empty a particular shelf of the vending machine selected in Block S110, Block S190 can transmit a notification to one or more suppliers associated with product designated for the particular shelf to prompt the supplier(s) to restock the shelf of the vending machine with new units of the designated products. However, Block S190 can function in any other way to automatically prompt a vendor or supplier to restock the vending machine according to any other trigger, event, or inventory status.

8. Method

As shown in FIG. 3, one variation of the method includes Block S160, which recites receiving, from a user, a pre-order for a unit of a product supplied by a vendor and/or stocked in the vending machine. Generally, Block S160 functions to capture an order for a product prior to scheduled restocking of the vending machine by a vendor such that the vendor may supply both pre-sold products and products for retail simultaneously and through a single point of sale (i.e. the vending machine). For example, a bakery can schedule to restock a particular vending machine with a limited menu every morning. In this example, on a Tuesday afternoon, a user can access an online ordering interface for the bakery, select a custom product or a product not on a limited menu designated for the vending machine, specify the particular vending machine as a pickup location for the product, set the following morning as the fulfillment date, and submit payment (e.g., with a credit card) to the bakery via the online ordering interface. The following morning, the bakery can stock the vending machine with both standard limited menu items and the user's pre-ordered item. When convenient, the user can retrieve his order from vending machine to complete the transaction. Alternatively, if the user decides on the following day that he is no longer “in the mood” for the particular product, he can return the product and request a refund, the bakery (or vending machine or vending machine service) can refund all or a portion of the product's cost to the user, and the vending machine can repost the item as for sale to other patrons through the vending machine. However, Block S160 can function in any other way to receive and/or fulfill a product pre-order through the vending machine.

As shown in FIG. 4, one variation of the method includes Block S150, which recites receiving a gift order, from a sender, specifying a recipient and a vended product in a vending machine, notifying the recipient, and applying the gift order to purchase of the vended product from the vending machine by the recipient. Generally, Block S150 functions to enable electronic gifting of tangible product through a local vending machine. For example, the sender can be a friend and coworker of the recipient, the vending machine can be stocked with cupcakes, and the sender can gift a cupcake, available through the vending machine, to the recipient on the recipient's birthday. In this example, the sender can avoid the hassle of ordering, picking up, storing, and eventually delivering the cupcake to the recipient upon the recipient's birthday, and the sender can instead gift a cupcake—from a set of already available cupcakes stocked in the vending machine—to the recipient who can then pick up the cupcake from the vending machine when convenient. Block S150 can also send the notification of the gift order to the recipient through a SMS text message, email, or any other suitable communication channel, such as described above. Block S150 can further cooperate with Block S160 described above to pre-order a gift for the recipient such that the gift can be stocked in the vending machine alongside a standard selection of vended products supplied by a vendor. However, Block S150 can handle a gift order or a gift pre-order for a sender on behalf of a recipient in any other suitable way.

The foregoing systems and methods can be embodied and/or implemented at least in part as a machine configured to receive a computer-readable medium storing computer-readable instructions. The instructions can be executed by computer-executable components integrated with the vehicle, scheduling kiosk(s), a remote scheduling server, hardware/firmware/software elements of a user computer or mobile device, or any suitable combination thereof. Other systems and methods of the invention can be embodied and/or implemented at least in part as a machine configured to receive a computer-readable medium storing computer-readable instructions. The instructions can be executed by computer-executable components integrated by computer-executable components integrated with apparatuses and networks of the type described above. The computer-readable medium can be stored on any suitable computer readable media such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or any suitable device. The computer-executable component can be a processor but any suitable dedicated hardware device can (alternatively or additionally) execute the instructions.

As a person skilled in the art will recognize from the previous detailed description and from the figures and claims, modifications and changes can be made to the embodiments of the invention without departing from the scope of this invention as defined in the following claims. 

I claim:
 1. A method for dynamically depleting inventory of vended perishable products, comprising: identifying an initial inventory of a set of perishable products stored on an open shelf inside a vending machine; retrieving sell-by times of the set of perishable products; in response to a sell-by time of a particular unit of a first product in the set of perishable products falling within a threshold period of time from a current time: identifying a second product complementary to the first product and stored within the vending machine; retrieving a transaction history of purchases from the vending machine by a group of patrons; based on the transaction history, identifying a previous transaction in which a particular patron, in the group of patrons, purchased a first unit of the second product from the vending machine; based on the transaction history, anticipating a predicted transaction time of a future purchase of a second unit of the second product by the particular patron from the vending machine; in response to the predicted transaction time preceding the sell-by time, assigning a first discount rate for the particular unit of the first product to the particular patron; transmitting an electronic communication to the particular patron prior to the predicted transaction time, the electronic communication specifying the particular unit of the first product, the first discount rate for the particular unit of the first product when purchased with a unit of the second product, the vending machine, and a time window for validity of the first discount rate, the time window preceding the sell-by time of the particular unit of the first product; and maintaining an original rate for the particular unit of the first product for each other patron in the group of patrons excluding the particular patron; and in response to removal of the particular unit of the first product and the second unit of the second product during a new transaction between the particular patron and the vending machine during the time window, applying the first discount rate to purchase of the particular unit of the first product in the new transaction.
 2. The method of claim 1, wherein maintaining the original rate comprises, in response to purchase of the particular unit of the first product by a second patron, distinct from the first patron, during the time window, billing the second patron according to the original rate of the particular unit of the first product prior to application of the discount rate; and further comprising, in response to purchase of the particular unit of the first product by the second patron: voiding the first discount rate for the particular unit of the first product for the particular patron; and notifying the particular patron of unavailability of the particular unit of the first product and invalidity of the first discount rate.
 3. The method of claim 1, wherein transmitting the electronic communication comprises defining the time window for validity of the first discount rate preceding the sell-by time and offset from the sell-by time by a second time window.
 4. The method of claim 3, further comprising, in response to expiration of the first time window prior to the purchase of the particular unit of the first product by the particular patron: voiding the first discount rate for the particular unit of the first product for the particular patron; and assigning to a second patron a second discount rate for the particular unit of the first product, the second discount rate valid during the second time window.
 5. The method of claim 4, wherein assigning to the second patron the second discount rate comprises: based on the transaction history, identifying a second previous transaction in which the second patron, in the group of patrons, purchases a third unit of the second product; anticipating a second predicted transaction time of a second future purchase of the third unit of the second product by the second patron from the vending machine; in response to the second predicted transaction time preceding the sell-by time, assigning the second discount rate for the particular unit of the first product to the second patron; and prior to the second predicted transaction time, transmitting a second electronic communication to the second patron, the electronic communication specifying the particular unit of the first product, the second discount rate, the vending machine housing the particular unit of the first product, and the second time window for validity of the second discount rate.
 6. The method of claim 1: wherein transmitting the electronic communication comprises transmitting an electronic notification to a mobile computing device associated with the particular patron; and further comprising transmitting a receipt for the transaction to the mobile computing device in response to completion of the new transaction.
 7. The method of claim 1: wherein identifying an initial inventory of the set of perishable products comprises inventorying a set of foodstuffs arranged on a particular shelf within the vending machine by receiving identifiers broadcast wirelessly by the set of foodstuffs comprising the particular unit of the first product; wherein retrieving sell-by times for the set of units of perishable products comprises: identifying the first product comprising a first foodstuff; defining the time window for validity of the discount rate for the first foodstuff preceding the sell-by time of the first foodstuff; and wherein assigning the first discount rate for the particular unit comprises setting the first discount rate for the first foodstuff based on the original rate of the first foodstuff and proximity of the time window to the sell-by time of the first foodstuff.
 8. The method of claim 1, wherein identifying the second product complementary to the first product comprises: identifying the particular unit of the first product comprising a dessert item; and selecting the second product, comprising an entrée item complementary to the dessert item, based on a predefined compatibility relationship between the dessert item and the entrée item.
 9. The method of claim 1, wherein applying the first discount rate to purchase of the particular unit comprises: initiating the new transaction in response to receiving a cashless payment mechanism from the particular patron; and in response to initiating the new transaction, rendering a visual indicator on a display coupled to the vending machine, the visual indicator visually distinguishing the particular unit of the first product from other products in the set of perishable products arranged on the open shelf in the vending machine.
 10. The method of claim 9: wherein identifying the initial inventory of a set of perishable products comprises identifying the initial inventory of the set of perishable products within the vending machine based on wireless signals received by a radio antenna arranged over the open shelf within the vending machine prior to unlocking a door of the vending machine; further comprising: unlocking the door of the vending machine in response to initiation of the new transaction; recording a final inventory of perishable products within the vending machine based on wireless signals received by the radio antenna following opening and closure of the door during the new transaction; initiating a payment, with the cashless payment mechanism, for a difference between the initial inventory and the final inventory to complete the new transaction; and in response to completion of the new transaction, clearing the visual indicator from the display.
 11. The method of claim 1, wherein retrieving sell-by times of the set of perishable products comprises: retrieving a schedule for a next delivery of additional units of the first product to the vending machine; identifying an expiration time for the first product corresponding to when freshness of the first product declines below a preset freshness threshold; and in response to the expiration time preceding the next delivery, defining the sell-by time of units of the first product corresponding with the expiration time of the first product; and in response to the expiration time succeeding the next delivery, defining the sell-by time corresponding with the next delivery.
 12. The method of claim 1, wherein transmitting the electronic communication to the patron comprises indicating a quantity of units of the second product currently stored in the vending machine.
 13. The method of claim 1: wherein identifying the previous transaction comprises collecting a transaction history of the particular patron with a set of vending machines within a geographic location, the set of vending machines comprising the vending machine; further comprising calculating a distance between the vending machine and a mobile computing device associated with the particular patron; and wherein transmitting the electronic communication comprises transmitting the electronic communication to the mobile computing device in response to the distance between the vending machine and the mobile computing device remaining below a threshold distance.
 14. The method of claim 1, further comprising, in response to removal of the particular unit of the first product unaccompanied by the second product during the new transaction by the particular patron: voiding the first discount rate; and applying a second discount rate, less than the first discount rate, to purchase of the particular unit of the first product in the second new transaction.
 15. A method for dynamically depleting inventory of vended perishable products, comprising: identifying an initial inventory of a set of perishable products stored on an open shelf inside a vending machine; defining sell-by times of the set of perishable products; in response to a sell-by time of a particular unit of a first product in the set of perishable products falling within a threshold period of time from a current time: retrieving a transaction history of purchases from the vending machine by a group of patrons; based on the transaction history, identifying a previous transaction in which a particular patron, in the group of patrons, purchased a first unit of the second product from the vending machine, the first product comprising a substitute for the second product; based on the transaction history, anticipating a predicted transaction time of a future transaction of a second unit of the second product by the particular patron from the vending machine; in response to the predicted transaction time preceding the sell-by time, assigning a first discount rate for the particular unit of the first product to the particular patron; and transmitting an electronic communication to the particular patron prior to the predicted transaction time, the electronic communication specifying the particular unit of the first product as a substitute for the second product, the first discount rate for the particular unit of the first product, the vending machine, and a time window for validity of the first discount rate, the time window preceding the sell-by time of the particular unit of the first product; maintaining an original rate for the particular unit of the first product for each other patron in the group of patrons excluding the particular patron; in response to removal of the particular unit of the first product during a new transaction between the particular patron and the vending machine during the time window, applying the first discount rate to purchase of the particular unit of the first product in the new transaction.
 16. The method of claim 15: wherein identifying the previous transaction comprises identifying the second product in a previous transaction by the particular patron, an original price of the first product greater than an original price of the second product; and wherein assigning the first discount rate for the particular unit of the first product to the particular patron comprises assigning a discounted price to the particular unit of the first product, the discounted price of the first product greater than the original price of the second product.
 17. The method of claim 16: wherein transmitting the electronic communication comprises notifying the particular patron of the first discount rate for the particular unit of the first product when purchased with a unit of the second product; and wherein applying the first discount rate comprises, in response to removal of the particular unit of the first product and a unit of the second product during the new transaction, applying the first discount rate to purchase of the particular unit of the first product in the new transaction and the second unit of the second product.
 18. The method of claim 15, wherein identifying the previous transaction comprises: identifying the particular unit of the first product comprising a first entrée item; and selecting the second product, comprising a second entrée item distinct from the first entrée item, based on a predefined substitution relationship between the first entrée item and the second entrée item.
 19. The method of claim 15, further comprising: locking a door of the vending machine; at a processor arranged on the door, recording an initial inventory of products arranged within the vending machine based on signals received by a radio antenna arranged over a shelf within the vending machine, transmitted to a radio frequency identification reader arranged on the door via a cable routed through a frame of the door, and read by the radio frequency identification reader; initiating the new transaction in response to receiving a cashless payment mechanism from the particular patron; unlocking the door in response to authentication of the cashless payment mechanism; in response to closure of the door, recording a final inventory of products within the vending machine based on signals received by the radio antenna and read by the radio frequency identification reader; and initiating a payment with the cashless payment mechanism for a difference between the initial inventory and the final inventory to complete the transaction.
 20. The method of claim 19: wherein identifying the initial inventory of the set of perishable products comprises recalling a previous final inventory following a preceding transaction, and wherein initiating the payment with the cashless payment mechanism comprises identifying a disjoint of products between the final inventory and the previous final inventory of the preceding transaction 